package com.itheima.d4_enum;

public class Test {
    public static void main(String[] args) {
        // 目标：认识枚举类。
        // A.X = null;
        //1.报错，枚举类不能创建对象
        // A a = new A();
        //每一个枚举项都是被`public static final修饰，所以被可以类名调用，而且不能更改。枚举类的第一行都是常量，记住的都是枚举类的对象
        A a1 = A.X;   //类名调用,A.X访问这个x对象，交给a1记住
        A a2 = A.Y;
        A a3 = A.Z;
        System.out.println("a1= "+a1);

        //2. 枚举类提供的额外API
        // public static A[] values(); 该方法是枚举类继承的父类的方法，可以拿到当前所有的枚举对象放到A类型数组中
        System.out.println(A.values());
        System.out.println("把枚举对象数组遍历");
        A[] s1 = A.values();    //拿到全部对象
        for (int i = 0; i < s1.length; i++) {
            System.out.print(s1[i]+"\t");
        }

        System.out.println(" ");

        //public static A valueOf(java.lang.String); 该方法是可以直接根据枚举对象名得到当前的枚举对象
        A  s2 = A.valueOf("Z");
        System.out.println("枚举类X为： "+s2);
        System.out.println(s2.name());  //Z
        System.out.println(s2.ordinal()); //索引
        System.out.println(a2.ordinal());

        System.out.println("=========抽象枚举======");
        B b1 = B.Y;
        b1.go();  //调用的go方法是Y的匿名内部类中重写的go方法
        B b2 = B.X;
        b2.go();

    }
}
